import axios from 'axios';
import { showToast, showLoadingToast, closeToast  } from 'vant';
import { useUserStore } from '@/stores/user'

// 创建axios实例
const request = axios.create({
  baseURL: 'http://smart-shop.itheima.net/index.php?s=/api/', // 设置请求的基础URL
  timeout: 5000, // 设置请求超时时间
});

// 请求拦截器
request.interceptors.request.use(config => {
  // 显示loading
  showLoadingToast({
    message: '加载中...',
    duration: 0,
    forbidClick: true,      // 禁止点击
    loadingType: 'spinner', // 图标
  })

  // 默认请求有token的情况下带token访问
  const userStore = useUserStore()
  if(userStore.getToken){
    config.headers['Access-Token'] = userStore.getToken
    config.headers['Content-Type'] = 'application/json'
    config.headers.platform = 'h5'
  }

  return config; // 返回请求配置
}, error => {
  return Promise.reject(error); // 返回错误
}); 

// 响应拦截器
request.interceptors.response.use(response => {

  // 2xx范围的函数
  const res = response.data

  if (res.status === 200) {
    closeToast()
    return res; // 返回响应数据
  } else {
    showToast(res.message);
    return Promise.reject(res.message); // 返回错误
  }

}, error => {
  return Promise.reject(error); // 返回错误 超过2xx状态码
});

// 导出axios实例
export default request;
